﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Controllers;

namespace GestorDeFlotasDesktop.Listados
{
    public partial class lstEstadisticos : Form
    {
        private bool valido = true;

        #region Inicializador

        public lstEstadisticos()
        {
            InitializeComponent();
        }

        #endregion

        #region Eventos

        private void lstEstadisticos_Load(object sender, EventArgs e)
        {
            btnLimpiar_Click(null, null);
            CargarGrilla();
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            cboTipo.SelectedIndex = 0;
            dtpAño.Value = DateTime.Today;
            cboTrimestre.SelectedIndex = 0;

            gvwAutos.DataSource = "";
            gvwChoferes.DataSource = "";
            gvwClientes.DataSource = "";
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            ValidarForm(sender, e);
            if (valido)
            {
                DateTime date_from;
                DateTime date_to;
                string df;
                string dt;
                int month = 1;

                switch (cboTrimestre.SelectedIndex)
                {
                    case 1:
                        month = 1;
                        break;
                    case 2:
                        month = 4;
                        break;
                    case 3:
                        month = 7;
                        break;
                    case 4:
                        month = 10;
                        break;
                }

                date_from = new DateTime(dtpAño.Value.Year, month, 1, 0, 0, 0);
                date_to = date_from.AddMonths(4).AddMilliseconds(-1);
                date_to = date_to.AddDays(-1);
                df = String.Format("{0:M-d-yyyy HH:mm:ss}", date_from);
                dt = String.Format("{0:M-d-yyyy HH:mm:ss}", date_to);


                switch (cboTipo.SelectedIndex)
                {
                    case 1:
                        gvwChoferes.Visible = true;
                        gvwAutos.Visible = false;
                        gvwClientes.Visible = false;
                        lblTop.Text = "Top 5 Choferes";
                        gvwChoferes.DataSource = ChoferController.ObtenerChoferesTop5(df, dt);
                        break;
                    case 2:
                        gvwAutos.Visible = true;
                        gvwChoferes.Visible = false;
                        gvwClientes.Visible = false;
                        lblTop.Text = "Top 5 Taxis";
                        gvwAutos.DataSource = AutoController.ObtenerAutosTop5(df, dt);
                        break;
                    case 3:
                        gvwClientes.Visible = true;
                        gvwChoferes.Visible = false;
                        gvwAutos.Visible = false;
                        lblTop.Text = "Top 5 Clientes";
                        gvwClientes.DataSource = ClienteController.ObtenerClientesTop5(df, dt);
                        break;
                }

            }
           
        }

        #endregion

        private void CargarGrilla()
        {
            //Autos
            gvwAutos.AutoGenerateColumns = false;

            var colPatente = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Auto_Patente",
                Name = "Patente",
                HeaderText = "Patente",
                ReadOnly = true,
                Width = 120
            };
            gvwAutos.Columns.Add(colPatente);

            var colAutosRecaudacion = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Auto_Recaudacion",
                Name = "Auto_Recaudacion",
                HeaderText = "Recaudacion",
                ReadOnly = true,
                Width = 120
            };

            gvwAutos.Columns.Add(colAutosRecaudacion);

            //Choferes
            gvwChoferes.AutoGenerateColumns = false;

            var colChoferesNombre = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Chofer_Nombre",
                Name = "Chofer_Nombre",
                HeaderText = "Nombre",
                ReadOnly = true,
                Width = 120
            };
            gvwChoferes.Columns.Add(colChoferesNombre);

            var colChoferesApellido = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Chofer_Apellido",
                Name = "Chofer_Apellido",
                HeaderText = "Apellido",
                ReadOnly = true,
                Width = 120
            };
            gvwChoferes.Columns.Add(colChoferesApellido);

            var colChoferesDni = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Chofer_DNI",
                Name = "Chofer_DNI",
                HeaderText = "DNI",
                ReadOnly = true,
                Width = 120
            };
            gvwChoferes.Columns.Add(colChoferesDni);

            var colChoferesRecaudacion = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Chofer_Recaudacion",
                Name = "Chofer_Recaudacion",
                HeaderText = "Recaudacion",
                ReadOnly = true,
                Width = 120
            };
            gvwChoferes.Columns.Add(colChoferesRecaudacion);

            //Clientes
            gvwClientes.AutoGenerateColumns = false;

            var colClientesNombre = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Cliente_Nombre",
                Name = "Cliente_Nombre",
                HeaderText = "Nombre",
                ReadOnly = true,
                Width = 120
            };
            gvwClientes.Columns.Add(colClientesNombre);

            var colClientesApellido = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Cliente_Apellido",
                Name = "Cliente_Apellido",
                HeaderText = "Apellido",
                ReadOnly = true,
                Width = 120
            };
            gvwClientes.Columns.Add(colClientesApellido);

            var colClientesDni = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Cliente_DNI",
                Name = "Cliente_DNI",
                HeaderText = "DNI",
                ReadOnly = true,
                Width = 120
            };
            gvwClientes.Columns.Add(colClientesDni);

            var colClientesRecaudacion = new DataGridViewTextBoxColumn
            {
                DataPropertyName = "Cliente_Consumo",
                Name = "Cliente_Consumo",
                HeaderText = "Consumo",
                ReadOnly = true,
                Width = 120
            };
            gvwClientes.Columns.Add(colClientesRecaudacion);


        }

        private void cboTipo_Validated(object sender, EventArgs e)
        {
            if (cboTipo.SelectedIndex == 0)
            {
                errProvider.SetError(cboTipo, "Debe seleccionar un tipo de estadística");
                valido = false;
            }
            else
            {
                errProvider.SetError(cboTipo, "");
            }
        }


        private void cboTrimestre_Validated(object sender, EventArgs e)
        {
            if (cboTrimestre.SelectedIndex == 0)
            {
                errProvider.SetError(cboTrimestre, "Debe seleccionar un trimestre");
                valido = false;
            }
            else
            {
                errProvider.SetError(cboTrimestre, "");
            }
        }


        private void dtpAño_Validated(object sender, EventArgs e)
        {
            if (dtpAño.Value > DateTime.Today)
            {
                errProvider.SetError(dtpAño, "Debe seleccionar una fecha anterior a hoy");
                valido = false;
            }
            else
            {
                errProvider.SetError(dtpAño, "");
            }
        }

        private void ValidarForm(object sender, EventArgs e)
        {
            valido = true;
            cboTipo_Validated(sender, e);
            dtpAño_Validated(sender, e);
            cboTrimestre_Validated(sender, e);
        }


    }
}

